import time
import uuid
from datetime import datetime
from autoapi.common.log import log


# ✅ 注册器：用于统一注册和展示哪些函数可作为hook
__registered_hooks__ = {}


def hook(func):
    __registered_hooks__[func.__name__] = func
    return func


# 🌟 通用变量生成类 Hook（可替换）
@hook
def current_time() -> str:
    """返回当前时间字符串"""
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")


@hook
def generate_uuid() -> str:
    """返回随机 UUID"""
    return str(uuid.uuid4())


@hook
def current_timestamp() -> int:
    """返回当前时间戳"""
    return int(time.time())


# 📝 项目初始化数据 Hook
# 每个项目的数据模型不同，函数名、内容、日志都可修改；
# 可在此写 SQL、调用接口、造数据等操作。
@hook
def init_db_contract() -> None:
    log.info("初始化测试合同数据")
    log.info('示例：sql_exec("INSERT INTO contract (...) VALUES (...)")')


# 🧹 项目清理数据 Hook
# 每个项目数据清理方式不同，可通过接口、SQL 删除指定 ID 数据
@hook
def delete_contract(contract_id: str = "default_id") -> None:
    log.info(f"删除合同：{contract_id}")
    log.info('示例：requests.delete(f"/api/contract/{contract_id}")')


@hook
def demo() -> str:
    return "操作成功11111111111111111111111111111111111111111111111111111111"
